home *** CD-ROM | disk | FTP | other *** search
- Marcin (radmar) Wasilewski napisal 18-Gru-98 w
- *"Re: Procedura wyszukiwania w assemblerze."*:
-
- > Amiga znowu do takich najszybszych nie nale¿y (pomijam tu PPC)
- > oczywi¶cie. I je¶li chodzi o procedury, które wymagaj± wiele czasu
- > procesora a search na pewno do takich nale¿y to wg. mnie jest sens
- > przepisywania takich rzeczy na assembler.
-
- Pod warunkiem, ¿e kod w asie bêdzie rzeczysi¶cie szybszy.
-
- > C wspaniale siê nadaje do tworzenia GUI oraz skomplikowanych
- > algorytmów których napisanie w assemblerze by³o by niewygodne.
-
- C siê nadaje do wszystkiego.
-
- > Ciekawe jak by chodzi³ player dla MPEGów gdyby by³ pisany w C.
-
- Je¿eli by³by napisany przez cz³owieka który dobrze zna C, asembler
- 680x0 i kompilator na którym pracuje, to chodzi³by na 95% szybko¶ci
- playera asemblerowego. Oczywi¶cie szybki port z Unixa nie da takiej
- szybko¶ci, gdy¿ kod z za³o¿enia przeno¶ny nie mo¿e byæ zoptymalizowany
- pod konkretny procesor.
-
- > Sêk w tym aby znale¼æ umiar i w assemblerze pisaæ tylko te fragmenty
- > kodu, które s± najistotniejsze dla szybko¶ci dzia³ania. Mnie siê
- > jeszcze tego nie uda³o opanowaæ :) i niestety ca³e progsy lubiê
- > pisaæ w asm. :(((
-
- Wspó³czujê. Zapanowanie nad czym¶ wiêkszym jest trudne (wiem z
- w³asnego do¶wiadczenia). I ciekawe co zrobisz z tym kodem w momencie,
- gdy trzeba go bêdzie przenie¶æ na OS 5 na procku xxx.
-
- > Je¶li w C uda Ci siê napisaæ prockê szybsz± od tej to od jutra
- > przestaje pisaæ w asm i ca³y swój wolny czas po¶wiêcam na
- > doskonalenie znajomo¶ci C.
-
- Niezale¿nie od tego, czy kto¶ napisze szybsz± prockê w C, to szczerze
- namawiam do poznania tego jêzyka :-).
-
- > Mam jeszcze kilka pomys³ów na optymalizacje np. jednorazowe
- > pobieranie 4 znaków (long word) z przeszukiwanego tekstu. Po
- > uprzednim wyrównaniu do warto¶ci parzystej.
-
- Taki numer mo¿e siê nie op³acaæ przy procesorach z data cache i
- szybkiej pamiêci. Bo trochê manewrów ze SWAP-ami i przesuniêciami Ci
- dojdzie. A poza tym w przypadku cache i tak ³adowanie odbywa siê
- d³ugimi s³owami.
-
- > Umieszczenie w rejestrach ca³ego "wzorca" do wyszukania o ile
- > d³ugo¶æ jego na to pozwala. Teraz jest w ten sposób porównywany
- > pierwszy znak wzorca.
-
- Pamiêtaj, ¿e tego rodzaju optymalizacje maj± jedn± brzydk± cechê. To
- co przyspiesza np. na 020 mo¿e spowalniaæ na 040, czy 060 i odwrotnie.
- Chyba ¿e napiszesz wersjê pod ka¿dego procka.
-
- > Ale dla pierwszych 6-ciu znaków (tj. 1 znak w jednym rejestrze) na
- > pewno bêdzie to szybsze.
-
- Na pewno. Ale po pierwsze bêdzie szybsze kosztem d³ugo¶ci kodu, a po
- drugie w C te¿ to mo¿na napisaæ. Zadeklarujê 6 zmiennych z atrybutem
- 'register' i po k³opocie...
-
- PS. Tylko proszê, nie u¿ywaj w procedurze instrukcji MOVE16 ;-)))).
-
- --
- Grzegorz Kraszewski (Krashan/BlaBla) - krashan@amiga.org.pl
- PCBDesigner home page - http://amiga.org.pl/~krashan
-
-
-
-